package org.example.utils;

import java.sql.*;

/**
 * 编写 Java 程序，实现 Java 程序与 数据库进行连接
 * 注意：必须把连接数据库的驱动程序导入到项目中 - jar包
 *
 * @author ZQX
 * @date 2024-12-02
 */
public class DbUtil {
    /**
     * 连接URL
     */
    private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=StudentSystem;Encrypt=false";

    /**
     * 驱动程序
     */
    private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    /**
     * 帐号
     */
    private static final String USER = "sa";
    /**
     * 密码
     */
    private static final String PASS = "sa";


    static {
        try {
            // 在类加载时，加载 JDBC 驱动程序
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }


    /**
     * 获取连接对象
     *
     * @return 连接对象
     */
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(URL, USER, PASS);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 关闭相关的对象 - 释放资源
     *
     * @param rst  结果集对象 - 用于存储查询的数据
     * @param stmt 语句对象 - 用于执行 SQL 语句 - Statement、PreparedStatement、CallableStatement
     * @param conn 连接对象 - 建立 Java 语言与数据库的桥梁
     */
    public static void close(ResultSet rst, Statement stmt, Connection conn) {
        // 保证代码的健壮性
        if (rst != null) {
            try {
                rst.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }



}
